package com.zbkj.service.service.mszs;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.common.model.mszs.MszsOrder;
import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.request.mszs.*;
import com.zbkj.common.response.mszs.MszsOrderResponse;
import com.zbkj.common.response.mszs.MszsRoomOrderResponse;

import java.util.List;

/**
 * @description 民宿助手订单表-service接口
 * @author lingfe
 * @date 2023-11-16
 */
public interface MszsOrderService extends IService<MszsOrder> {

    /**
     * 新增
     */
    boolean insert(MszsOrderRequest mszsOrderRequeste);

    /**
     * 删除
     */
    boolean delete(int id);

    /**
     * 更新
     */
    boolean update(MszsOrderUpdateRequest request);

    /**
     * 批量订单更新
     */
    boolean updateStatus(List<MszsOrder> orders);

    /**
     * 根据主键 id 查询
     */
    MszsRoomOrderResponse load(Integer id);

    /**
     * 分页查询
     * @param request 筛选参数
     * @param pageParamRequest 分页参数
     */
    List<MszsOrder> pageList(MszsOrderSearchRequest request, PageParamRequest pageParamRequest);


    /**
     * 移动端-订单列表分页查询
     * @param request 筛选参数
     * @param pageParamRequest 分页参数
     */
    List<MszsOrderResponse> frontpageList(MszsOrderSearchRequest request, PageParamRequest pageParamRequest);

    /**
     * 移动端-订单统计
     * @param request
     * @return
     */
    Integer ordes(MszsCenterRequest request);

    /**
     * 移动端-入住量统计
     * @param request
     * @return
     */
    Integer checkIns(MszsCenterRequest request);

    /**
     * 订单任务-订单列表
     */
    List<MszsOrder> ordersTask();

    /**
     * 根据房间id-获取订单列表
     */
    List<MszsRoomOrderResponse> roomOrders(MszsRoomSelectRequest request);

    /**
     * 根据房间id获取一条最新的订单
     */
    MszsRoomOrderResponse roomCheckIn(int roomId);

    /**
     * 根据用户手机号-获取一条订单记录
     * @param userphone 用户手机号
     */
    MszsOrder getWherePhoneOne(String userphone);

    /**
     * 根据后6位订单号-获取一条订单记录
     * @param order6 后6位订单号
     */
    MszsOrder getWhereOrder6One(String order6);

    /**
     * 订单列表 定时任务
     */
    List<MszsOrder> taskOrderList();


}
